// 预设的颜色数组 - 使用较为柔和的配色
const COLORS = [
  "#5B8FF9", // 天蓝色
  "#5AD8A6", // 薄荷绿
  "#FF9F7F", // 珊瑚色
  "#65B7F3", // 浅蓝色
  "#F7B500", // 金黄色
  "#8B72DE", // 淡紫色
  "#37A2DA", // 湖蓝色
  "#FF99C3", // 粉红色
  "#95D3F2", // 浅天蓝
  "#F6BD16", // 明黄色
  "#6395F9", // 靛青色
  "#75D874", // 青草绿
  "#E8684A", // 橙红色
  "#9FD4FF", // 浅蓝灰
  "#FF9D4D", // 橙色
  "#7EB9FF", // 天蓝
  "#9287FF", // 浅紫色
  "#8ED1F2", // 浅湖蓝
  "#FFB980", // 杏色
  "#5FCABB", // 青绿色
  "#73A373", // 淡绿色
  "#FF8B8B", // 浅红色
  "#73B9BC", // 青色
  "#7289AB", // 灰蓝色
  "#91CC75", // 嫩绿色
  "#F6C022", // 浅橙色
  "#6E7FF3", // 淡蓝紫
  "#78D3F8", // 天青色
  "#FFB1B1" // 浅粉色
]

// 颜色管理器
// 用于为不同省份分配唯一的颜色,保证同一省份在不同图表中使用相同的颜色
// 使用单例模式确保全局只有一个颜色管理器实例
// 颜色从预设的 COLORS 数组中循环选取
class ColorManager {
  private static instance: ColorManager
  private colorMap: Map<string, string> = new Map()
  private currentIndex = 0

  private constructor() {}

  // 获取颜色管理器实例
  public static getInstance(): ColorManager {
    if (!ColorManager.instance) {
      ColorManager.instance = new ColorManager()
    }
    return ColorManager.instance
  }

  // 获取指定省份的颜色
  public getColor(province: string): string {
    // 如果颜色已存在,直接返回
    if (this.colorMap.has(province)) {
      return this.colorMap.get(province)!
    }

    const color = COLORS[this.currentIndex % COLORS.length]
    this.colorMap.set(province, color)
    this.currentIndex++
    return color
  }

  // 重置颜色管理器
  public reset(): void {
    this.colorMap.clear()
    this.currentIndex = 0
  }
}

export const colorManager = ColorManager.getInstance()
